/*
 * ImageContainer.h
 *
 *  Created on: Aug 22, 2012
 *      Author: alberto
 *
 * Implementa uma classe container para as imagens utilizadas. O possui métodos para facilitar a leitura de grandes
 * quantidades de imagens, baseadas em um arquivo base, além de guardar diversas informações importantes do conjunto
 * de imagens lido, como a quantidade total e os nomes de cada imagem para a subsequente reconstrução da árvore
 *
 */

#ifndef IMAGECONTAINER_H_
#define IMAGECONTAINER_H_

#include <string>
#include <iostream>
#include <fstream>
#include <vector>
#include <cassert>
#include <cstdio>
#include <exception>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace std;
using namespace cv;

class ImageContainer {
public:
	ImageContainer();
	ImageContainer(const string &bf);
	virtual ~ImageContainer();
	void ReadBaseFile();
	void ReadImageDirectory();
	void ListImageNames(string fname);
	void ListImageDirectory() const;
	void showReadImages() const;
	Mat getImages(const size_t index) const;
	string getImagePath(const size_t index) const;
	string getImageName(const size_t index) const;
	size_t getImageNumber();

private:
	string basefileName;
	string imageDirectory;
	vector<string> imageNames;
	vector<Mat> images;
	size_t imageNumber;
};

#endif /* IMAGECONTAINER_H_ */
